package com.clyme.expediente.servicios;

import com.clyme.expediente.dao.EspecialistaDao;
import com.clyme.expediente.dao.LineaDao;
import com.clyme.expediente.dao.UbigeoDao;
import com.clyme.expediente.daoImpl.EspecialistaDaoImpl;
import com.clyme.expediente.daoImpl.LineaDaoImpl;
import com.clyme.expediente.daoImpl.UbigeoDaoImpl;
import com.clyme.expediente.entidad.Especialista;
import com.clyme.expediente.entidad.LineaTrabajo;
import com.clyme.expediente.entidad.Ubigeo;
import com.clyme.expediente.hibernate.HibernateConexion;
import com.clyme.expediente.utilitarios.IConexion;
import com.clyme.expediente.utilitarios.Utilitario;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Luis Alonso Ballena Garcia
 */
public class EspecialistaServicios {

    IConexion conexion;
    EspecialistaDao<Especialista> daoEspecialista;
    UbigeoDao<Ubigeo> daoUbigeo;
    LineaDao<LineaTrabajo> daoLinea;

    public EspecialistaServicios() {
        conexion = new HibernateConexion();
        daoEspecialista = new EspecialistaDaoImpl(conexion);
        daoUbigeo = new UbigeoDaoImpl(conexion);
        daoLinea = new LineaDaoImpl(conexion);
    }
    
    public Especialista obtenerEspecialista(Integer id)
    {
        conexion.beginConexion();
        Especialista especialista = daoEspecialista.buscarPorId(Especialista.class, id);
        conexion.closeConexion();
        return especialista;
    }

    public void registrarEspecialista(Especialista especialista) {
        especialista.setHabilitado(Short.valueOf("1"));
        conexion.beginTransaccion();
        daoEspecialista.agregar(especialista);
        conexion.closeTransaccion();
        Utilitario.enviarMensajeGlobalValido("Se ha registrado correctamente");
    }

    public void actualizarEspecialista(Especialista especialista) {
        conexion.beginTransaccion();
        daoEspecialista.actualizar(especialista);
        conexion.closeTransaccion();
        Utilitario.enviarMensajeGlobalValido("Se ha actualizado correctamente");
    }

    public void eliminarEspecialista(Especialista especialista) {
        especialista.setHabilitado(Short.valueOf("0"));
        conexion.beginTransaccion();
        daoEspecialista.actualizar(especialista);
        conexion.closeTransaccion();
        Utilitario.enviarMensajeGlobalValido("Se ha eliminado correctamente");
    }

    public List<Especialista> obtenerTodos() {
        List<Especialista> especialistas = new ArrayList<Especialista>();
        conexion.beginConexion();
        especialistas = daoEspecialista.obtenerTodosActivos(Especialista.class);
        conexion.closeTransaccion();
        return especialistas;
    }
    
    public List<LineaTrabajo> obtenerLineas()
    {
        List<LineaTrabajo> lineas = new ArrayList<LineaTrabajo>();
        conexion.beginConexion();
        lineas = daoLinea.obtenerTodosActivos(LineaTrabajo.class);
        conexion.closeConexion();
        return lineas;
    }
    
    public List<Ubigeo> obtenerUbigeos()
    {
        List<Ubigeo> ubigeos = new ArrayList<Ubigeo>();
        conexion.beginConexion();
        ubigeos = daoUbigeo.obtenerTodos(Ubigeo.class);
        conexion.closeConexion();
        return ubigeos;
    }
    
    public Ubigeo obtenerUbigeo(String codigoDep, String codigoProv, String codigoDist)
    {
        Ubigeo ubigeo = null;
        conexion.beginConexion();
        ubigeo = daoUbigeo.getUbigeo(codigoDep, codigoProv, codigoDist);
        conexion.closeConexion();
        return ubigeo;
    }

}
